import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.EmptyBorder;


public class VueSaisiePeriodique extends Vue {
	// déclaration des éléments
	private JPanel contentPane;
	private JTextField textFieldNumero;
	private JTextField textFieldTitre;
	private JTextField textFieldPremierePage;
	private JTextField textFieldNom;
	private JTextField textFieldPrenom;
	private JTextField textFieldIssn;
	private JButton btnAnnuler;
	private JButton btnValider;
	private JButton btnAnnulerNumero;
	private JButton btnValiderNumero;
	private JButton btnAnnulerArticles;
	private JButton btnAjouterArticles;
	private JButton btnAnnulerAuteurs;
	private JButton btnNewButtonEnregistrer;
	private JButton btnAuteurSuivant;
	private JButton btnNewButtonQuitter;
	private JButton btnFinSaisieAuteur;
	private JButton btnAjouterMotCle;
	private JButton btnReinitialiser;
	private JButton btnFinSaisieMotcle;
	private JTextField textFieldTitreperio;
	private JButton btnAnnulerMotCle;
	private JButton btnFinSaisieParution;
	private JButton btnQuitter;
	private JList listMotCleNonAjoute;
	private JList listMotCleAjoute;
	private JList list;
	private JTextArea textAreaAuteurs;
	boolean auMoinsUnArticle = false;
	boolean auMoinsUnAuteur= false;
	//vecteur de periodique pour la première liste
	Vector<String> vectPeriodiques= new Vector();
	//vecteur de mot cle pour la liste de mots cle
	Vector<String> vectMotsClesNonAjoute= new Vector();
	//vecteur de mot cle selectionné
	Vector<String> vectMotsClesAjoute= new Vector();
	//ensemble de motscles associés à un article
	HashSet<MotsCles> motsclesArticle= new HashSet<MotsCles>();
	//ensemble d'auteurs associés à un article
	HashSet<Auteur> auteursArticle= new HashSet<Auteur>();
	//déclaration de l'ensemble des articles créés pour la parution
	HashSet<Article> articlesParution = new HashSet<Article>();
	String titre, premPage, issn, numero;
	int numInt;
	Periodique period;
	private JScrollPane scrollPaneMotCleNonAjoute;
	/**
	 * Create the frame.
	 */
	public VueSaisiePeriodique(Controleur controler) {
		super(controler);
		setTitle("Enregistrement d'un nouveau périodique");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 515, 901);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNumero = new JLabel("Numero");
		lblNumero.setBounds(12, 191, 61, 15);
		contentPane.add(lblNumero);
		
		textFieldNumero = new JTextField();
		textFieldNumero.setBounds(79, 189, 114, 19);
		contentPane.add(textFieldNumero);
		textFieldNumero.setColumns(10);
		
		textFieldIssn = new JTextField();
		textFieldIssn.setBounds(265, 28, 114, 19);
		contentPane.add(textFieldIssn);
		textFieldIssn.setColumns(10);
		
		textFieldTitreperio = new JTextField();
		textFieldTitreperio.setBounds(265, 71, 114, 19);
		contentPane.add(textFieldTitreperio);
		textFieldTitreperio.setColumns(10);
		
		JLabel lblIssn = new JLabel("Issn");
		lblIssn.setBounds(175, 30, 61, 15);
		contentPane.add(lblIssn);
		
		JLabel lblTitre_1 = new JLabel("Titre");
		lblTitre_1.setBounds(175, 73, 61, 15);
		contentPane.add(lblTitre_1);
		
		btnNewButtonQuitter = new JButton("Quitter");
		btnNewButtonQuitter.setBounds(129, 113, 107, 25);
		btnNewButtonQuitter.addActionListener(new ActionListener()
		 {
			public void actionPerformed(ActionEvent event) {
				getControleur().fermerVue(VueSaisiePeriodique.this);
				}
		 });
		contentPane.add(btnNewButtonQuitter);
		
		btnNewButtonEnregistrer = new JButton("Enregistrer");
		btnNewButtonEnregistrer.setBounds(301, 113, 107, 25);
		btnNewButtonEnregistrer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				issn = textFieldIssn.getText();
				String nomp = textFieldTitreperio.getText();
				getControleur().nouvPeriodique(issn, nomp);
				}
			});
		contentPane.add(btnNewButtonEnregistrer);
		
		JSplitPane splitPane_1 = new JSplitPane();
		splitPane_1.setBounds(22, 218, 252, 27);
		contentPane.add(splitPane_1);
		
		btnAnnulerNumero = new JButton("Annuler");
		splitPane_1.setLeftComponent(btnAnnulerNumero);
		btnAnnulerNumero.addActionListener(new ActionListener()
		 {
			public void actionPerformed(ActionEvent event) {
				setEtat(initiale);
			}
		 });
		btnValiderNumero = new JButton("Valider");
		splitPane_1.setRightComponent(btnValiderNumero);
		btnValiderNumero.addActionListener(new ActionListener()
		 {
			public void actionPerformed(ActionEvent event) {
				numero = textFieldNumero.getText();
				Vector<String> vect= new Vector();
				vect.addElement(numero);
				try {
					numInt = Integer.parseInt(numero);
					//appel de la methode pour verifier qu'aucun champ n'est vide
					if(getControleur().champsVide(vect)==true){
							if(getControleur().getParu(issn, numero)==null)
							{
								setEtat(inter2);
							}
							else
							{
								Message dialog = new Message("Erreur : Ce numéro de parution est déjà attribué");
								dialog.setVisible(true);
							}
					}
				}
				catch(NumberFormatException nfe){
					Message dialog = new Message("Erreur : ce numero de parution est invalide");
					dialog.setVisible(true);
				}
			}
		 });
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(12, 257, 483, 2);
		contentPane.add(separator_1);
		
		JLabel lblSaisieDesArticles = new JLabel("Saisie des articles :");
		lblSaisieDesArticles.setBounds(12, 271, 252, 15);
		contentPane.add(lblSaisieDesArticles);
		
		JLabel lblTitre = new JLabel("Titre");
		lblTitre.setBounds(12, 298, 61, 15);
		contentPane.add(lblTitre);
		
		textFieldTitre = new JTextField();
		textFieldTitre.setBounds(122, 296, 114, 19);
		contentPane.add(textFieldTitre);
		textFieldTitre.setColumns(10);
		
		JLabel lblPremierePage = new JLabel("Premiere page");
		lblPremierePage.setBounds(12, 334, 127, 15);
		contentPane.add(lblPremierePage);
		
		textFieldPremierePage = new JTextField();
		textFieldPremierePage.setColumns(10);
		textFieldPremierePage.setBounds(129, 332, 114, 19);
		contentPane.add(textFieldPremierePage);
		
		JSplitPane splitPane_2 = new JSplitPane();
		splitPane_2.setBounds(12, 361, 252, 27);
		contentPane.add(splitPane_2);
		
		btnAnnulerArticles = new JButton("Annuler");
		splitPane_2.setLeftComponent(btnAnnulerArticles);
		btnAnnulerArticles.addActionListener(new ActionListener()
		 {
			public void actionPerformed(ActionEvent event) {
				//  affichage de la fenetre de saisie d'un ouvrage
				setEtat(inter1);
			}
		 });
		
		btnAjouterArticles = new JButton("Ajouter Article");
		splitPane_2.setRightComponent(btnAjouterArticles);
		btnAjouterArticles.addActionListener(new ActionListener()
		 {
			public void actionPerformed(ActionEvent event) {
				//  affichage de la fenetre de saisie d'un ouvrage
				titre = textFieldTitre.getText();
				premPage = textFieldPremierePage.getText();
				try {
			        int premPageInt = Integer.parseInt(premPage);
			    } 
				catch (NumberFormatException nfe) {
			    	// traitement à faire dans ce cas
			    	Message dialog = new Message("Erreur : Le numero de page doit être exclusivement numérique");
					dialog.setVisible(true);
					return ; 
			    }
				Vector<String> vect= new Vector();
				vect.addElement(titre);
				vect.addElement(premPage);
				//appel de la methode pour verifier qu'aucun champ n'est vide
				if(getControleur().champsVide(vect)==true){
					//#
					//Remplissage de la liste d'auteur
					//#
					HashMap<String, Auteur> auteurs;
					auteurs= new HashMap<String, Auteur>();
					auteurs=getControleur().rechAuteurs();
					getControleur().alimenteAuteurs(auteurs);
				}
			}
		 });
		
		JSeparator separatorFinArticles = new JSeparator();
		separatorFinArticles.setBounds(12, 400, 483, 2);
		contentPane.add(separatorFinArticles);
		
		JLabel lblAjouterAuteurs = new JLabel("Ajouter auteur(s) :");
		lblAjouterAuteurs.setBounds(12, 414, 252, 15);
		contentPane.add(lblAjouterAuteurs);
		
		JLabel lblNom = new JLabel("Nom");
		lblNom.setBounds(12, 441, 61, 15);
		contentPane.add(lblNom);
		
		JLabel lblPrenom = new JLabel("Prenom");
		lblPrenom.setBounds(12, 474, 61, 15);
		contentPane.add(lblPrenom);
		
		textFieldNom = new JTextField();
		textFieldNom.setBounds(122, 441, 114, 19);
		contentPane.add(textFieldNom);
		textFieldNom.setColumns(10);
		
		textFieldPrenom = new JTextField();
		textFieldPrenom.setColumns(10);
		textFieldPrenom.setBounds(129, 472, 114, 19);
		contentPane.add(textFieldPrenom);
		
		JLabel lblAuteurAjout = new JLabel("Auteur(s) existant(s) :");
		lblAuteurAjout.setBounds(272, 414, 223, 15);
		contentPane.add(lblAuteurAjout);
		
		JScrollPane scrollPaneAuteurs = new JScrollPane();
		scrollPaneAuteurs.setBounds(272, 440, 223, 82);
		contentPane.add(scrollPaneAuteurs);
		
		textAreaAuteurs = new JTextArea();
		scrollPaneAuteurs.setColumnHeaderView(textAreaAuteurs);
		
		JSplitPane splitPane_3 = new JSplitPane();
		splitPane_3.setBounds(12, 501, 252, 27);
		contentPane.add(splitPane_3);
		
		btnAnnulerAuteurs = new JButton("Annuler");
		btnAnnulerAuteurs.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				setEtat(inter2);
			}
		});
		splitPane_3.setLeftComponent(btnAnnulerAuteurs);
		
		btnAuteurSuivant = new JButton("Auteur suivant");
		btnAuteurSuivant.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				String nom = textFieldNom.getText();
				String prenom = textFieldPrenom.getText();
				Vector<String> vect= new Vector();
				vect.addElement(nom);
				vect.addElement(prenom);
				setEtat(inter3);
				//appel de la methode pour verifier qu'aucun champ n'est vide
				if(getControleur().champsVide(vect)==true){
					//#
					//Remplissage de la liste d'auteur
					//#
					auMoinsUnAuteur=true;
					Auteur auteurCree = getControleur().nouvAuteur(nom, prenom);
					auteursArticle.add(auteurCree);
					Message dialog = new Message("L'auteur a été ajouté");
					dialog.setVisible(true);
					textFieldNom.setText("");
					textFieldPrenom.setText("");
					textAreaAuteurs.setText(null);
					getControleur().lierAuteur(auteurCree);
					HashMap<String, Auteur> auteurs;
					auteurs= new HashMap<String, Auteur>();
					auteurs=getControleur().rechAuteurs();
					getControleur().alimenteAuteurs(auteurs);
				}
			}
		});
		splitPane_3.setRightComponent(btnAuteurSuivant);
		
		JSeparator separatorFinAuteurs = new JSeparator();
		separatorFinAuteurs.setBounds(12, 577, 483, 2);
		contentPane.add(separatorFinAuteurs);
		
		btnFinSaisieAuteur = new JButton("Fin saisie Auteurs");
		btnFinSaisieAuteur.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				String nom = textFieldNom.getText();
				String prenom = textFieldPrenom.getText();
				Vector<String> vect= new Vector();
				vect.addElement(nom);
				vect.addElement(prenom);
				if(getControleur().champsVide(vect)==true || auMoinsUnAuteur==true){
					//#
					//Remplissage de la liste d'auteur
					//#
					if(auMoinsUnAuteur != true)
					{
						Auteur auteurCree = getControleur().nouvAuteur(nom, prenom);
						auteursArticle.add(auteurCree);
						Message dialog = new Message("L'auteur a été ajouté");
						auMoinsUnAuteur=true;
						dialog.setVisible(true);
						getControleur().lierAuteur(auteurCree);
						textAreaAuteurs.setText(null);
						HashMap<String, Auteur> auteurs;
						auteurs= new HashMap<String, Auteur>();
						auteurs=getControleur().rechAuteurs();
						getControleur().alimenteAuteurs(auteurs);
					}
					HashMap<String, MotsCles> motCles;
					motCles= new HashMap<String, MotsCles>();
					motCles=getControleur().rechMotsCles();
					getControleur().alimenteMotsCles(motCles);					
				}
			}
		});
		btnFinSaisieAuteur.setBounds(12, 540, 164, 25);
		contentPane.add(btnFinSaisieAuteur);
		
		JLabel lblAjouterMotcle = new JLabel("Ajouter Mot-Clé :");
		lblAjouterMotcle.setBounds(12, 591, 127, 15);
		contentPane.add(lblAjouterMotcle);
		
		scrollPaneMotCleNonAjoute = new JScrollPane();
		scrollPaneMotCleNonAjoute.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPaneMotCleNonAjoute.setBounds(12, 618, 252, 104);
		contentPane.add(scrollPaneMotCleNonAjoute);
		
		listMotCleNonAjoute = new JList();
		scrollPaneMotCleNonAjoute.setColumnHeaderView(listMotCleNonAjoute);
		
		JScrollPane scrollPaneMotCleAjout = new JScrollPane();
		scrollPaneMotCleAjout.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPaneMotCleAjout.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPaneMotCleAjout.setBounds(278, 618, 223, 104);
		contentPane.add(scrollPaneMotCleAjout);
		
		listMotCleAjoute = new JList();
		scrollPaneMotCleAjout.setRowHeaderView(listMotCleAjoute);
		
		btnAjouterMotCle = new JButton("Ajouter");
		btnAjouterMotCle.setBounds(12, 734, 107, 25);
		contentPane.add(btnAjouterMotCle);
		btnAjouterMotCle.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				if(!listMotCleNonAjoute.isSelectionEmpty()){
					listMotCleAjoute.removeAll();
					MotsCles m=getControleur().getMotCle((String)listMotCleNonAjoute.getSelectedValue());
					motsclesArticle.add(m);
					if(!vectMotsClesAjoute.contains(m.getMot())){
						vectMotsClesAjoute.addElement(m.getMot());
						listMotCleAjoute.setListData(vectMotsClesAjoute);
					}
				}
			}
		});
		
		btnReinitialiser = new JButton("Réinitialiser");
		btnReinitialiser.setBounds(276, 734, 144, 25);
		contentPane.add(btnReinitialiser);
		btnReinitialiser.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				viderMotCles();
				setEtat(inter4);
			}
		});
		JSeparator separatorFinMotCle = new JSeparator();
		separatorFinMotCle.setBounds(12, 810, 483, 2);
		contentPane.add(separatorFinMotCle);
		
		JSplitPane splitPaneMotCle = new JSplitPane();
		splitPaneMotCle.setBounds(12, 771, 317, 27);
		contentPane.add(splitPaneMotCle);
		
		btnAnnulerMotCle = new JButton("Annuler");
		splitPaneMotCle.setLeftComponent(btnAnnulerMotCle);
		btnAnnulerMotCle.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
			viderMotCles();
			}
		});
		
		btnFinSaisieMotcle = new JButton("Fin saisie Mot-clés");
		splitPaneMotCle.setRightComponent(btnFinSaisieMotcle);
		
		JSeparator separator = new JSeparator();
		separator.setBounds(12, 179, 483, 2);
		contentPane.add(separator);
		
		JSplitPane splitPane_4 = new JSplitPane();
		splitPane_4.setBounds(12, 824, 303, 27);
		contentPane.add(splitPane_4);
		
		btnFinSaisieParution = new JButton("Fin Saisie Parution");
		splitPane_4.setLeftComponent(btnFinSaisieParution);
		
		btnQuitter = new JButton("Quitter");
		splitPane_4.setRightComponent(btnQuitter);
		
		btnQuitter.addActionListener(new ActionListener()
		 {
			public void actionPerformed(ActionEvent event) {
				getControleur().fermerVue(VueSaisiePeriodique.this);
				}
		 });
		
		btnFinSaisieParution.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
					Parution paru = getControleur().nouvParution(issn, numero, articlesParution);
			}
		});
		
		btnFinSaisieMotcle.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				if (!motsclesArticle.isEmpty()){
					auMoinsUnArticle = true;
					Article art = getControleur().nouvArticle(titre, premPage, auteursArticle ,motsclesArticle);
					articlesParution.add(art);
				}
				else{
					Message dialog = new Message("Au moins un motcle doit etre affecté pour l'article");
					dialog.setVisible(true);
				}
			}
		});
	}
	
	public void alimente(MotsCles m) {
		//alimente le vecteur vectMotsCles du motscles courrant
		vectMotsClesNonAjoute.addElement(m.getMot());
		//alimente la liste
		listMotCleNonAjoute.setListData(vectMotsClesNonAjoute);
	}
	
	public void alimente(Periodique p) {
		//alimente le vecteur vectMotsCles du motscles courrant
		vectPeriodiques.addElement(p.getIssn());
		list.setListData(vectPeriodiques);
	}
	
	//recherche le nom et le prenom d'un auteur et l'ajoute dans le text area des auteurs
	public void alimente(Auteur a) {
		String nom,prenom;
		nom=a.getNom();
		prenom=a.getPrenom();
		textAreaAuteurs.append("\n" + nom + "  " + prenom);
	}
	
	
	public void viderMotCles(){
		listMotCleAjoute.removeAll();
		motsclesArticle.clear();
		vectMotsClesAjoute.clear();
		setEtat(inter3);
	}
	
	public void viderTxtAreaAuteurs(){
		if (textAreaAuteurs.getLineCount()!=0)
		textAreaAuteurs.setText("");
	}
	
	public void setEtat (int etat){
		switch (etat){
			case initiale: {
				btnNewButtonEnregistrer.setEnabled(true);
				btnNewButtonQuitter.setEnabled(true);
				//---------------------------------
				btnAnnulerNumero.setEnabled(false);
				btnValiderNumero.setEnabled(false);
				textFieldNumero.setEnabled(false);
				//---------------------------------
				btnAnnulerArticles.setEnabled(false);
				btnAjouterArticles.setEnabled(false);
				textFieldTitre.setEnabled(false);
				textFieldPremierePage.setEnabled(false);
				//---------------------------------
				textAreaAuteurs.setEnabled(false);
				btnAnnulerAuteurs.setEnabled(false);
				btnAuteurSuivant.setEnabled(false);
				btnFinSaisieAuteur.setEnabled(false);
				textFieldNom.setEnabled(false);
				textFieldPrenom.setEnabled(false);
				//---------------------------------
				listMotCleNonAjoute.setEnabled(false);
				listMotCleAjoute.setEnabled(false);
				btnAjouterMotCle.setEnabled(false);
				btnReinitialiser.setEnabled(false);
				btnAnnulerMotCle.setEnabled(false);
				btnFinSaisieMotcle.setEnabled(false);
				//---------------------------------
				btnFinSaisieParution.setEnabled(false);
				btnQuitter.setEnabled(false);
				break;
			}
			case inter1: {
				btnNewButtonEnregistrer.setEnabled(false);
				btnNewButtonQuitter.setEnabled(false);
				//---------------------------------
				btnAnnulerNumero.setEnabled(true);
				btnValiderNumero.setEnabled(true);
				textFieldNumero.setEnabled(true);
				//---------------------------------
				btnAnnulerArticles.setEnabled(false);
				btnAjouterArticles.setEnabled(false);
				textFieldTitre.setEnabled(false);
				textFieldPremierePage.setEnabled(false);
				//---------------------------------
				textAreaAuteurs.setEnabled(false);
				btnAnnulerAuteurs.setEnabled(false);
				btnAuteurSuivant.setEnabled(false);
				btnFinSaisieAuteur.setEnabled(false);
				textFieldNom.setEnabled(false);
				textFieldPrenom.setEnabled(false);
				//---------------------------------
				listMotCleNonAjoute.setEnabled(false);
				listMotCleAjoute.setEnabled(false);
				btnAjouterMotCle.setEnabled(false);
				btnReinitialiser.setEnabled(false);
				btnAnnulerMotCle.setEnabled(false);
				btnFinSaisieMotcle.setEnabled(false);
				//---------------------------------
				btnFinSaisieParution.setEnabled(false);
				btnQuitter.setEnabled(false);
				break;
			}
			case inter2: {
				btnNewButtonEnregistrer.setEnabled(false);
				btnNewButtonQuitter.setEnabled(false);
				//---------------------------------
				btnAnnulerNumero.setEnabled(false);
				btnValiderNumero.setEnabled(false);
				textFieldNumero.setEnabled(true);
				//---------------------------------
				btnAnnulerArticles.setEnabled(true);
				btnAjouterArticles.setEnabled(true);
				textFieldTitre.setEnabled(true);
				textFieldPremierePage.setEnabled(true);
				//---------------------------------
				textAreaAuteurs.setEnabled(false);
				btnAnnulerAuteurs.setEnabled(false);
				btnAuteurSuivant.setEnabled(false);
				btnFinSaisieAuteur.setEnabled(false);
				textFieldNom.setEnabled(false);
				textFieldPrenom.setEnabled(false);
				//---------------------------------
				listMotCleNonAjoute.setEnabled(false);
				listMotCleAjoute.setEnabled(false);
				btnAjouterMotCle.setEnabled(false);
				btnReinitialiser.setEnabled(false);
				btnAnnulerMotCle.setEnabled(false);
				btnFinSaisieMotcle.setEnabled(false);
				//---------------------------------
				// On rend actif le bouton si au moins un article a été créé
				//---------------------------------
				if (auMoinsUnArticle){
					btnFinSaisieParution.setEnabled(true);
				}
				else
				{
					btnFinSaisieParution.setEnabled(false);
				}
				btnQuitter.setEnabled(false);
				break;
			}
			case inter3: {
				btnNewButtonEnregistrer.setEnabled(false);
				btnNewButtonQuitter.setEnabled(false);
				//---------------------------------
				btnAnnulerNumero.setEnabled(false);
				btnValiderNumero.setEnabled(false);
				textFieldNumero.setEnabled(true);
				//---------------------------------
				btnAnnulerArticles.setEnabled(false);
				btnAjouterArticles.setEnabled(false);
				textFieldTitre.setEnabled(true);
				textFieldPremierePage.setEnabled(true);
				//---------------------------------
				textAreaAuteurs.setEnabled(true);
				btnAnnulerAuteurs.setEnabled(true);
				btnAuteurSuivant.setEnabled(true);
				btnFinSaisieAuteur.setEnabled(true);
				textFieldNom.setEnabled(true);
				textFieldPrenom.setEnabled(true);
				//---------------------------------
				listMotCleNonAjoute.setEnabled(false);
				listMotCleAjoute.setEnabled(false);
				btnAjouterMotCle.setEnabled(false);
				btnReinitialiser.setEnabled(false);
				btnAnnulerMotCle.setEnabled(false);
				btnFinSaisieMotcle.setEnabled(false);
				//---------------------------------
				btnFinSaisieParution.setEnabled(false);
				btnQuitter.setEnabled(false);
				break;
			}
			case inter4: {
				btnNewButtonEnregistrer.setEnabled(false);
				btnNewButtonQuitter.setEnabled(false);
				//---------------------------------
				btnAnnulerNumero.setEnabled(false);
				btnValiderNumero.setEnabled(false);
				textFieldNumero.setEnabled(true);
				//---------------------------------
				btnAnnulerArticles.setEnabled(false);
				btnAjouterArticles.setEnabled(false);
				textFieldTitre.setEnabled(true);
				textFieldPremierePage.setEnabled(true);
				//---------------------------------
				textAreaAuteurs.setEnabled(false);
				btnAnnulerAuteurs.setEnabled(false);
				btnAuteurSuivant.setEnabled(false);
				btnFinSaisieAuteur.setEnabled(false);
				textFieldNom.setEnabled(true);
				textFieldPrenom.setEnabled(true);
				//---------------------------------
				listMotCleNonAjoute.setEnabled(true);
				listMotCleAjoute.setEnabled(true);
				btnAjouterMotCle.setEnabled(true);
				btnReinitialiser.setEnabled(true);
				btnAnnulerMotCle.setEnabled(true);
				btnFinSaisieMotcle.setEnabled(true);
				//---------------------------------
				btnFinSaisieParution.setEnabled(false);
				btnQuitter.setEnabled(false);
				break;
			}
			case finale: {
				btnNewButtonEnregistrer.setEnabled(false);
				btnNewButtonQuitter.setEnabled(false);
				//---------------------------------
				btnAnnulerNumero.setEnabled(false);
				btnValiderNumero.setEnabled(false);
				textFieldNumero.setEnabled(true);
				//---------------------------------
				btnAnnulerArticles.setEnabled(false);
				btnAjouterArticles.setEnabled(false);
				textFieldTitre.setEnabled(true);
				textFieldPremierePage.setEnabled(true);
				//---------------------------------
				textAreaAuteurs.setEnabled(false);
				btnAnnulerAuteurs.setEnabled(false);
				btnAuteurSuivant.setEnabled(false);
				btnFinSaisieAuteur.setEnabled(false);
				textFieldNom.setEnabled(true);
				textFieldPrenom.setEnabled(true);
				//---------------------------------
				listMotCleNonAjoute.setEnabled(false);
				listMotCleAjoute.setEnabled(false);
				btnAjouterMotCle.setEnabled(false);
				btnReinitialiser.setEnabled(false);
				btnAnnulerMotCle.setEnabled(false);
				btnFinSaisieMotcle.setEnabled(false);
				//---------------------------------
				btnFinSaisieParution.setEnabled(false);
				btnQuitter.setEnabled(true);
				break;
			}
		}
	}
}